package com.xw.Service;

import java.util.Map;

import com.xw.Model.MailServerModel;
import com.xw.Model.api.ClusterInfoModel;

/**
 * 描述:封装服务器状态的相关业务接口
 * @author 杨建全
 * @date 2017年6月16日 上午9:36:26
 */
public interface ServerStateService {
	
	/**
	 * 描述：获取当前缓存中拉取邮件的服务器
	 * @author 杨建全
	 * @date 2017年6月16日
	 * @return
	 */
	MailServerModel getNowFatchingServer();
	
	/**
	 * 描述：获取当前集群的服务器
	 * @author 杨建全
	 * @date 2017年6月16日
	 * @return
	 */
	Map<String, MailServerModel> getClusterServers();
	
	/**
	 * 描述：根据服务器名获取服务器信息
	 * @author 杨建全
	 * @date 2017年6月16日
	 * @param name
	 * @return
	 */
	MailServerModel getClusterServerInfoByName(String name);
	
	/**
	 * 描述：根据名称更新集群缓存信息
	 * @author 杨建全
	 * @date 2017年6月16日
	 * @param ipAndName
	 * @param mailServerModel
	 */
	void updateClusterServerInfoByName(String ipAndName, MailServerModel mailServerModel);
	
	/**
	 * 描述：更新缓存中当前拉取服务器的信息
	 * @author 杨建全
	 * @date 2017年6月16日
	 * @param temp
	 */
	void updateNowFatchingServerInfo(MailServerModel msm);
	
	/**
	 * 描述：根据名称删除缓存中集群服务器信息
	 * @author 杨建全
	 * @date 2017年6月16日
	 * @param ipAndName
	 */
	void deleteClusterServerInfoByName(String ipAndName);
	
	/**
	 * 描述：获取本服务器的基础信息
	 * @author 杨建全
	 * @date 2017年6月16日
	 * @return
	 */
	MailServerModel getServerModel();
	
	/**
	 * 描述：获取服务器状态
	 * @author 杨建全
	 * @date 2017年6月16日
	 * @return
	 */
	ClusterInfoModel getClusterInfo();
}
